package br.fafica.poo2.rightcode.aluno;

import java.util.ArrayList;

import br.fafica.poo2.rightcode.Aplicacao;
import br.fafica.poo2.rightcode.exception.AlunoNaoEncontradoException;
import br.fafica.poo2.rightcode.usuario.Usuario;

public class RepositorioAlunoArrayList implements IRepositorioAluno{

	private ArrayList<Aluno> alunos;
	private static int increment;
	
	public RepositorioAlunoArrayList(){
		alunos = new ArrayList<Aluno>();
		increment = (getCodigoIncrement()+1);
		System.err.println("CONTRUTOR DE ARRAYLIST ALUNO");
	}
	
	
	/*public void AdicionarAluno(Aluno aluno) {
		alunos.add(aluno);
		
	}

	public void RemoverAluno(String nome) {
		Aluno aluno = pesquisaAluno(nome);
		alunos.remove(aluno);
	}

	public String ListarAluno() {
		String resultado = "";
		for(int i = 0; i < alunos.size();i++){
			resultado += alunos.get(i) + "\n\n";
			}
		return resultado;
	}
	

	public void EditarAluno(String nome,Aluno novo) {
		int indice = getIndice(nome);
		this.alunos.set(indice, novo);
	}
	
	private Aluno pesquisaAluno(String nome){
		Aluno aluno = null;
		for(int i =0;i < alunos.size();i++){
			if(nome.equalsIgnoreCase(alunos.get(i).getNome())){
				aluno = alunos.get(i);
			}
		}
		return aluno;
	}*/
	
/*	private int getIndice(String nome){ //Esse metodo sera usado em EditarAluno
		int indice = -1;
		for(int i=0;i<alunos.size();i++){
			if(nome.equalsIgnoreCase(alunos.get(i).getNome())){
				indice = i;
				break;
			}
		}
		return indice;
	}*/
	
	// Metodo para o altoIncremento
	private int getCodigoIncrement(){
		return alunos.size();
	}

	@Override
	public void TesteAluno() {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void InstalarAluno(boolean samples) {
		if(samples){
			Aplicacao app = new Aplicacao();
			for(Aluno a: app.getAluno()){
				AdicionarAluno(a);
			}
		}
		
	}


	@Override
	public void AdicionarAluno(Aluno aluno) {
		if(aluno.getCodigo()==0){
			aluno.setCodigo(increment);
			increment+=1;
		}
		alunos.add(aluno);
	}


	@Override
	public ArrayList<Aluno> ListaAluno() {
		return alunos;
	}


	@Override
	public void RemoverAluno(Aluno aluno) {
		alunos.remove(aluno);
	}

	@Override
	public void EditarAluno(Aluno aluno) throws AlunoNaoEncontradoException {
		Aluno novo = BuscarAluno(aluno.getCodigo());
		if(novo!=null){
			novo.setNome(aluno.getNome());
			/*novo.setDisciplina(aluno.getDisciplina());*/
			novo.setTurma(aluno.getTurma());
		}else{
			throw new AlunoNaoEncontradoException();
		}
	}
	
	@Override
	public Aluno BuscarAluno(int codigo) {
		Aluno busca= null;
		for(int i=0;i<alunos.size();i++){
			if(codigo==alunos.get(i).getCodigo()){
				busca=alunos.get(i);
				break;
			}
		}
		return busca;
	}

}
